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