目录
1.包
每个go程序都由包组成,程序从main包开始运行,通过import导入需要使用的包
package main
import "fmt"
import "math/rand"
/*
导入多个包时也可用
import(
"fmt"
"math/rand"
)
代替
*/
func main() {
fmt.Println("My favorite number is", rand.Intn(10))
//引用包的方法时需要首字母大写(方法大写相当于公共方法)
}
2.函数
函数可以没有参数或者接收多个参数
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
//输出结果为55
当连续多个参数数据类型相同时,除了最后一个参数,其他参数可以省略类型
package main
import "fmt"
func add(x, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
函数可以返回任意数量的返回值
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("hello", "world")
fmt.Println(a, b)
}
//输出为world hello
Go 的返回值可被命名
没有参数的 return
语句返回已命名的返回值。也就是直接返回
package main
import "fmt"
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
func main() {
fmt.Println(split(17))
}
//输出为10
3.变量
var
语句用于声明一个变量列表,跟函数的参数列表一样,类型在最后
package main
import "fmt"
var c, python, java bool
func main() {
var i int
fmt.Println(i, c, python, java)
}
//输出为0 false false false(声明完变量后有零值)
/*
数值类型为 0,
布尔类型为 false,
字符串为 ""(空字符串)
*/
/*使用如下定义多个变量
var (
a int
b string
)
*/
变量声明可以包含初始值,每个变量对应一个
如果初始化值已存在,则可以省略类型;变量会从初始值中获得类型
package main
import "fmt"
var i, j int = 1, 2
func main() {
var c, python, java = true, false, "no!"
fmt.Println(i, j, c, python, java)
}
//1 2 true false no!
也可以直接使用:=来声明变量并赋值(类型推导)但不能在函数体外使用
package main
import "fmt"
//name := 2会报错
func main() {
var i, j int = 1, 2
k := 3
c, python, java := true, false, "no!"
fmt.Println(i, j, k, c, python, java)
}
4.基本数据类型
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
//int, uint 和 uintptr 在 32 位系统上通常为 32 位宽,在 64 位系统上则为 64 位宽
byte // uint8 的别名
rune // int32 的别名
// 表示一个 Unicode 码点
float32 float64
complex64 complex128 //复数
5.类型转换
①数值类型之间的相互转换
表达式 T(v)
将值 v
转换为类型 T
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
②其他类型转string类型
1.Sprintf(int为%d,float为%f,bool为%t,byte为%c)
例:strs = fmt.Sprintf("%d",i)
2.strconv方法
①int转string strconv.Itoa(a int)
②float转string
参数1:要转换的值
参数2:格式化的类型
'b'(-ddddp±ddd,二进制指数)
'e'(-d.dddde±dd,十进制指数)
'E'(-d.ddddE±dd,十进制指数)之一)
'f'(-ddd.dddd,无指数)
'g'('e' 表示大指数,否则为 'f')
'G'('E' 表示大指数,否则为 'f')
参数3:保留的小数点(特殊精度 -1 使用所需的最少位数)
参数4:格式化的类型(32、64)
strconv.FormatFloat(num,'f',2,64)
③bool转string strconv.FormatBoll(b bool)
④int64转string strconv.FormatInt(num,10)第二个参数为进制
③string转其他类型
1.string转int
func ParseInt(s string , base int , bitSize int ) (i int64 , err error )
base 16 表示“0x”,base 8 表示“0”,否则为 base 10
例 v,_ = strconv.ParseInt(s , 10 , 64) (_为返回的error)
2.string转float
func ParseFloat(s string , bitSize int ) (f float64 , err error )
例 v,_ = strconv.ParseFloat(str , 64)
3.string转bool
func ParseBool(str string) (value bool, err error)
例 v,_ = strconv.ParseBool("true")
4.string转字符
for _,r := range s{//_为下标
fmt.Printf("%v" , r)
}
6.常量
常量的声明与变量类似,只不过是使用 const
关键字。
常量可以是字符、字符串、布尔值或数值。
常量不能用 :=
语法声明
const pi = 3.14
const(
a = 1
b = "abc"
}