设为首页 加入收藏

TOP

Golang 笔记 1 基础、基本数据类型(一)
2017-09-30 13:35:32 】 浏览:3284
Tags:Golang 笔记 基础 基本 数据 类型

一、Go语言基础

1. 基础

Go语言中的标识符必须以字母(Unicode字母,PHP/JS可以用中文作为变量名)下划线开头。大写字母跟小写字母是不同的:Hello和hello是两个不同的名字。
  Go中有25个关键字:

break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var

  如果一个名字是在函数内容定义,那么它的作用域就在函数内容,如果在函数外部定义,那么将在当前包的所有文件中都可以访问。名字的开头字母的大小写决定了名字在包外的可见性。如果一个名字是大写字母开头,那么它可以被外部的包访问,例如fmt包的Printf函数。

2. 注释

  • 单行注释 // ...
  • 多行注释 /* ... */

3. Go程序的一般结构

  • Go程序是通过package来组织的
  • 只有package名称为main的包可以包含main函数
  • 一个可执行程序有且只有一个main包
// 当前程序的包名 package main // 导入其他的包 import "fmt" // 一次导入多个包 import ( "io" "os" ) // 常量的定义 const PI = 3.14 // 全局变量的声明与赋值,该变量在整个package中使用 var name = "go" // 一般类型声明 type newType int // 结构的声明 type go struct{} // 接口的声明 type golang interface{} // 由main函数作为程序入口启动 func main() { fmt.Println("Hello World!") }
  • 如果导入的包但是没有用到类型或者函数则会报编译错误
  • package别名: import io "fmt" 这样将fmt设置一个别名为io,调用的时候就可以这样: io.Println("...")

4. 可见性规则

  Go语言中使用大小写来决定该常量、变量、类型、接口、结构或函数是否可以被外部包所调用: 根据约定,函数名首字母小写即为private(外部不可以调用),大写为public

二、基本数据类型

1、变量和常量

  • 普通赋值:
// var 变量名称 变量类型 = 值 var num int = 1
  • 平行赋值
var num1,num2 int = 1, 2
  • 多行赋值
var (
    num1 int = 1 num2 int = 2 )

2、整数类型的命名和宽度

  Go的整数类型一共有10个
  其中计算架构相关的整数类型有两个: 有符号的整数类型 int, 无符号的整数类型 uint。
  在不同计算架构的计算机上,它们体现的宽度(存储某个类型的值所需要的空间)是不一样的。空间的单位可以是bit也可以是字节byte。
  

  除了这两个计算架构相关的整数类型之外,还有8个可以显式表达自身宽度的整数类型:
  

3、整数类型值的表示法

  

  如果以8进制为变量num赋值:

num = 039 // 用"0"作为前缀以表明这是8进制表示法

  如果以16进制为变量num赋值:

num = 0x39

4、浮点数类型

  浮点数类型有两个:float32/float64   浮点数类型的值一般由整数部分、小数点"."和小数部分组成。另外一种表示方法是在其中加入指数部分。指数部分由"E"或"e"以及带正负号的10进制整数表示。例:3.9E-2表示浮点数0.039。3.9E+1表示浮点数39。
  有时候浮点数类型值也可以被简化。比如39.0可以被简化为39。0.039可以被简化为.039。   在Go中浮点数的相关部分只能由10进制表示法表示。

5、复数类型

  复数类型有两个:complex64和complex128。实际上,complex64类型的值会由两个float32类型的值分别表示复数的实数部分和虚数部分。而complex128类型的值会由两个float64类型的值表示复数的实数部分和虚数部分。
  负数类型的值一般由浮点数表示的实数部分、加号"+"、浮点数表示的虚数部分以及小写字母"i"组成,比如3.9E+1 + 9.99E-2i。

6、byte与rune

  byte与rune都属于别名类型。byte是uint8的别名类型,而rune是int32的别名类型。
  一个rune的类型值即可表示一个Unicode字符。一个Unicode代码点通常由"U+"和一个以十六进制表示法表示的整数表示,例如英文字母'A'的Unicode代码点为"U+0041"。
  rune类型的值需要由单引号"'"包裹,不过我们还可以用另外几种方式表示: 

  

  另外在rune类型值的表示中支持几种特殊的字符序列,即:转义符。如下图: 

  

7、字符串类型

  字符串的表示法有两种,即:原生表示法和解释型表示法。原生表示法,需用用反引号"`"把字符序列包起来,如果用解释型表示法,则需要用双引号"""包裹字符序列。

var str1 string = "str" var str1 string = `str`

  二者的区别是,前者表示的是所见即所得的(除了回车符)。后者所表示的值中转义符会起作用。字符串值是不可变的,如果我们创建了一个此类型的值,就不可能再对它本身做任何修改。

三、高级数据类型

1、数组类型

  一个数组是可以容纳若干相同类型的元素的容器。数组的长度是固定的。如下声明一个数组类型:

type MyNumbers [3]int

类型声明语句由关键字type、类型名称和类型字面量组成

  上面这条类型声明语句实际上是为数组类型[3]int声明了一个别名类型。这使得我们可以把MyNumbers当作数组类型[3]int来使用。
  我们表示这样一个数组类型的值的时候。应该把该类型的类型字面量写在最左边,然后用花括号包裹该值包含的若干元素,各元素之间以(英文半角)逗号分割,即:

[3]int{1,2,3}

  现在我们把这个数组字面量赋给一个名为numbers的变量:

var numb
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇golang学习笔记 下一篇golang http server分析(一)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目