在go语言中,不像和其他语言一样,他没有所谓的public,private这两个定义公共和私有的关键字,他约束定义首字母大写就是公有的pulbic,小写或者下划线_就是私有的private。
var MAX_COUNT int=10//默认public,首字母大写
var min_count int=1//默认private,首字母小写
首先,在工程目录创建一个执行函数入口,包名为mian,这个不可改变,然后导入ftm这个基础函数包,可以取别名fm,或者.符号,但是一般不建议用.作别名,容易让人一眼看不知道导入了什么包
import (
f "fmt"
)
go声明变量,如果不声明变量类型,则由系统检测
var var0 int=0//单个声明
var va1,va2,va3 int=1,2,3//多个声明
var0:=0//单个声明
va1,va2,va3:=1,2,3//多个声明
var var0=0//单个声明
var va1,va2,va3=0,1,2//多个声明
const(
FIRST int= 0//public
SECOND //结果0,如果没有定义值,常量里面的值是自上引用
second =2//private
)
- go枚举,用关键字itoa,从0开始,每次自增1,不管它出现在常量集合定义的第几位,0都是从常量集合的第一个常量开始,每出现一个自增1,遇到第二个常量声明const关键字时候重置为0
const (
FIRST int= 1
SECOND //结果1,自上引用
THIRD = iota//结果2
)
- 类型别名,go语言可以声明一个类型别名,就好比取了另外一个名字,作用不变,用关键字type声明
type(
tInt int
tFloat float64
tByte byte
)
var va0 tInt=2//使用的时候
go函数是可以返回多个参数的,这一点跟其他语言有点不一样,表达式为
func 函数名(参数列表) (返回值列表) {
// 函数体
}
//一个返回值,返回列表可以不需要用()包裹返回参数类型
func t(a int) int {
return a + 1
}
//多个返回值,需要用()包裹返回参数类型
func t(a int) (int, int) {
return a + 1, a + 2
}
//不定参数
func t1(args...int){
for i,arg:=range args{
f.Println("values:",arg," position:",i)
}
}
//任意类型的不定参数函数定义
func 函数名(args ...interface{}) (返回值列表) {
// 函数体
}
//例子
func t2(args ...interface{}) {
for _, arg := range args {
switch arg.(type) {
case int:
f.Println(arg, "is an int value.")
case string:
f.Println(arg, "is a string value.")
case int64:
f.Println(arg, "is an int64 value.")
default:
f.Println(arg, "is an unknown type.")
}
}
}
c := func() func(参数类型列表) 返回值类型列表 {
// 自由变量定义
...
return func(参数列表) 返回值列表 {
// 函数定义
}
}
//函数参数是int类型,返回两个函数,返回的函数的参数都是int类型,返回值也都是int类型的
func1 := func(x int) (func(int) int, func(int) int) {
a1 := func(i int) int {
return i + x
}
a2 := func(j int) int {
return j + x
}
return a1, a2
}
fc1, fc2 := func1(8)
f.Println(fc1(2), fc2(3))//结果18,28
位运算符,譬如<< >>
3<<2//结果就是12
11>>2//结果就是2
位运算符计算先从十进制转二进制,3的二进制就等有0011,向左位移两位,就是变成等于1100,再转十进制就等于12了,向右位移的,也是先转换二进制,11的二进制就等于1011,向右位移两位,高位补0,就变成等于0010,再转十进制就等于2了
3 0011//二进制值
11 1011//二进制值
& 3&11 //如果两个都是1,就是1,如果不是,就是0,所以结果为0011,十进制结果就是3
| 3|11 //如果其中个都是1,就是1,如果两个都不是,就是0,所以结果为1011,十进制结果就是11
^ 3^11 //如果其中两个都是1,就是0,如果其中一个是1,就是1,所以结果为1000,十进制结果就是8
&^ 3&^11 //如果下面的1,就强制转换对应上面的为0,如果下面是0,就不做操作,所以结果为0000,十进制结果就是0