1.go语言的安装
博主的环境是ubuntu14.04,所以安装配置go语言的环境直接就使用
sudo apt-get install golang
安装完毕后
2.hello world
代码如下
/* hello.go */package mainimport "fmt"func main(){ fmt.Println("Hello,World!")}
注意Println方法P为大写
然后在终端编译运行
go run hello.go
或者使用build命令生成可执行文件
go build
3.go的一些语法知识
go每一个单独语句不需要特殊的分隔线,默认以行分隔符作为语句分隔符
关键字var标记变量,const标记常量
变量的声明
package mainimport "fmt"func main(){ const ( a = 0 ; b ) const( c = 0 ; d = 1 ) const e = 3 const f int8 = 4 /* iota是和const一起使用的,代表该常量的行索引,从0开始 */ const ( g = iota ; h ; i ) const j = iota var k int = 1 var l int l = 2 /* 默认为int */ var( m = 42949672960 ; n = 4294967296 ) var( o int8 = 1 ; p = 1 ) fmt.Println(a) fmt.Println(b) fmt.Println(c) fmt.Println(d) fmt.Println(e) fmt.Println(f) fmt.Println(g) fmt.Println(h) fmt.Println(i) fmt.Println(j) fmt.Println(k) fmt.Println(l) fmt.Println(m) fmt.Println(n) fmt.Println(o) fmt.Println(p)}
go的数据类型大概有
Boolean Types 它们是布尔类型,它由两个预定义的常量:(a) true (b) false |
Numeric Types 它们是算术类型,表示整数类型或b。在整个程序浮点值 |
String Types: 一个字符串类型代表组字符串值。它的值是一个字节序列。字符串是一次创造了稳定的类型,这是不可能改变一个字符串的内容。预声明的字符串类型为字符串 |
Derived Types: 它们包括:(a)指针类型,(b)数组类型,(c)结构类型,(d)联盟类型及(e)函数类型(f)切片类(g)函数类型(h)接口类型(i)地图类型(j)管道类型 |
Boolean Types
bool类型,变量值仅为true,false
不支持0, 1的赋值
package mainimport "fmt"func main(){ var a bool a = true fmt.Println(a) a = false fmt.Println(a)}
输出结果
Numeric Types
!!注意,无论定义任何数字类型,从测试结果来看,内存空间仍然占用了8个字节
带符号整型 int8 int16 int32 int64
不带符号整型 uint8 uint16 uint32 uint64
浮点数 float32 float64
复述 complex64 complex128
其他
byte 相同于 uint8
rune 相同于int32
uint 32位或64位
int 大小与uint一样
package mainimport "fmt"func main(){ fmt.Println(10/3) fmt.Println(10E5) fmt.Println(0x5) var a int8 a = 12 fmt.Println(a) var b int16 b = 12 fmt.Println(b) /* 带符号,所以当c大于127或小于-127的时候会报错 */ var c int8 c = 127 fmt.Println(c) /* 不带符号,所以当d大于255或小于0的时候会报错 */ var d uint8 d = 255 fmt.Println(d) var e int e = 4294967297 fmt.Println(e) var f float32 f = 3.2 fmt.Println(f) var g complex64 g = 3+2i fmt.Println(g)}
String Types
组成字符串的最小单位是字符 , 存储的最小单位是字节,字符串本身不支持修改.
package mainimport "fmt"func main(){ /* 默认为int */ var a = 'a' var b = "abc" var c string = "abc" fmt.Println(a) fmt.Println(b) fmt.Println(c)}
Derived Types
(a)指针类型
?似乎不支持数组指针
package mainimport "fmt"func main(){ var a int = 3 var b *int = &a var c **int = &b var d *int fmt.Println(a) fmt.Println(&a) fmt.Println(b) fmt.Println(*b) fmt.Println(&b) fmt.Println(*&b) fmt.Println(&*b) fmt.Println(c) /* nil指针 */ fmt.Println(d) fmt.Println(*d)}
(b)数组
package mainimport "fmt"func main(){ var a [2] int var b = [2] int {1, 2} var c = [2] int {3} var d = [2][2] int{ {5,6}, {7,8}} var e1 = 9 var e2 = 10 var e = [2] *int {&e1, &e2} fmt.Println(a[0]) fmt.Println(a[1]) fmt.Println(b[0]) fmt.Println(b[1]) fmt.Println(c[0]) fmt.Println(c[1]) fmt.Println(d[0][0]) fmt.Println(d[0][1]) fmt.Println(d[1][0]) fmt.Println(d[1][1]) fmt.Println(e[0]) fmt.Println(e[1])}
(c)结构类型
package mainimport "fmt"type Person struct{ name string age int}func main(){ var a Person var b *Person b = &a a.name = "kakaka" a.age = 21 fmt.Println(a) fmt.Println(a.name) fmt.Println(a.age) fmt.Println(&a) fmt.Println(b) fmt.Println(*b) fmt.Println(b.name) fmt.Println(b.age) fmt.Println(&b.name) fmt.Println(&b.age)}
(d)联盟类型及(e)函数类型(f)切片类(g)函数类型(h)接口类型(i)地图类型(j)管道类型