这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
Day 1
package main
import "fmt"
func main() {
fmt.Printf("%d %q", a, s)
fmt.Println(a, b, s)
}
2.First time define use :=
After use = 赋值
函数外面不能使用 := 只能用var 且不是全局变量,只是包内变量
eg: var (
aa = 3
ss = "kkk"
bb = true
)
复制代码
占位符表示
- 普通占位符
| 占位符 | 说明 |
|---|---|
| %v | 相应值的默认格式 |
| %+v | 打印结构体时,会添加字段名 |
| %#v | 相应值的Go语法表示(更加详细) |
| %T | 相应值的类型的Go语法表示 |
- 布尔占位符
| 占位符 | 说明 |
|---|---|
| %t | true 或 false |
- 整数占位符
| 占位符 | 说明 |
|---|---|
| %b | 二进制表示 |
| %c | 相应Unicode码点所表示的字符 |
| %d | 十进制表示 |
| %o | 八进制表示 |
| %q | 单引号围绕的字符字面值,由Go语法安全转义 |
| %x | 十六进制表示,字母形式为小写a-f |
| %X | 十六进制表示,字母形式为大写A-F |
- 浮点数和复数的组成部分
- 字符串与字节切片
| 占位符 | 说明 |
|---|---|
| %s | 输出字符串表示(string类型或[]byte) |
| %q | 双引号围绕的字符串,由Go语法安全地转义 |
| %x | 十六进制,小写字母,每字节两个字符 |
| %X | 十六进制,大写字母,每字节两个字符 |
- 指针
| 占位符 | 说明 |
|---|---|
| %p | 十六进制表示,前缀0x |
内建变量类型
- bool, string
- (u)int, (u)int8, (u)int16, (u)int32, (u)int64, uintptr
- byte, rune
- float32, float64, complex64, complex128
rune 字符型 32位
complex 复数
强制类型转换
类型转换是强制的
func triangle() {
var a, b int = 3, 4
var c int
c = int(math.Sqrt(float64(a * a + b * b))
fmt.Println(c)
}
//math.Sqrt() 要float64 且c为int 需要强制类型转换为 int
复制代码
常量
不需要首字母大写
func consts() {
const filename = "abc.txt"
const a, b = 3, 4 //const数值可作为各种类型使用
var c int
c = int(math.Sqrt(a*a + b*b))
fmt.Println(filename, c)
}
复制代码
常量枚举类型 (普通类型和自增值类型)
iota 自增值种子
func enums() {
const (
cpp = iota
_
python
golang
javascript
)
//b, kb, mb, gb, tb, pb
const (
b = 1 << (10 * iota)
kb
mb
gb
tb
pb
)
fmt.Println(cpp, javascript, python, golang)
fmt.Println(b, kb, mb, gb, tb, pb)
}
复制代码
条件语句
if
- if的条件里可以赋值
- if的条件里赋值的变量作用域只在这个if块里
package main
import (
"fmt"
"io/ioutil"
)
func main() {
const filename = "abc.txt"
if contents, err := ioutil.ReadFile(filename); err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s\n", contents)
}
//if err != nil {
// fmt.Println(err)
//} else {
// fmt.Printf("%s\n", contents)
//}
}
复制代码
switch
- switch 会自动break,除非使用fallthrough
- switch 后可以没有表达式
func eval(a, b int, op string) int {
var result int
switch op {
case "+":
result = a + b
case "-":
result = a - b
case "*":
result = a * b
case "/":
result = a / b
default:
panic("unsupported operator:" + op)
}
return result
}
复制代码
循环语句
for
- for的条件里不需要括号
- for的条件里可以省略初始条件,结束条件,递增表达式
for 起始条件;结束条件;递增条件
1.若没有起始条件和递增条件
则如下所示,相当于while循环
- 啥都不写 相当于死循环
for scanner.Scan() {
//while 循环
}
for {
//死循环
}
作者:devinroot
链接:juejin.cn/post/710868…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。