package 指明源文件所在的包
func 用于定义函数
go里面除了for循环的初始化用到;,其他大部分都不需要
go中没有while循环,不过可以利用 for condition来模拟while
编译:
go builde 编译的文件名
定义一个变量,比如字符串
var s string = ""
go也自动推导出类型
var s = "";
也可以 s:=""
:=用在值声明并且初始化
05 package main
07 import (
08 "os"
09 "flag" // command line option parser
10 )
12 var omitNewline = flag.Bool("n", false, "don't print final newline")
14 const (
15 Space = " "
16 Newline = "\n"
17 )
19 func main() {
20 flag.Parse() // Scans the arg list and sets up flags
21 var s string = ""
22 for i := 0; i < flag.NArg(); i++ {
23 if i > 0 {
24 s += Space
25 }
26 s += flag.Arg(i)
27 }
28 if !*omitNewline {
29 s += Newline
30 }
31 os.Stdout.WriteString(s)
32 }
go语言除了C有的int ,float,还有int8,int32,int32跟int同样大小,但是跟int不同,byte跟int8同样大小,类型也一样
s:="string"有点类似于C语言的char *str = "string",这样是不允许修改字符串内容的,只能更改str的指向
如果要创建可以修改的字符串,必须使用数组
声明一个数组 s:= []int{1,2,3}
var arrayOfInt [3] int{1,2,3},定义数组,不过arrayofint不能退化成指针
a:= [2][2]int{ [2]int{1,2},[2]int{3,4}}
slice
s:= [3]int{1,2,3};
sl = s[1:2];
fmt.Printf("%d\n",sl[0])
输出是2
go中的map要使用make来创建
可以用range来遍历数组,map,slice
for _;days = range monthdays {
fmt.Printf("%d\n",days);
}
函数:
def func(xs []int)
这个函数是传入一个splite而不是数组,在使用这个函数的时候:fun(array[:])而不是func(array),会提示无法把array转化为 []int