在GO语言中可以使用%+特定字母形成转义字符,这个表示特定含义的组合成为转义字符
在GO语言中又称为verb
转义字符在GO语言中以下两种情况使用频率较高
fmt.Print("verb",内容)//输出
fmt.Scanf("verb",接受变量)//输入
Verb | 含义 |
---|---|
%d | 十进制整数 |
%x、%X | 大小写方式显示十六进制整数 |
%o | 八进制整数 |
%b | 二进制整数 |
%f、%g、%e | 浮点数 |
%t | 布尔值 |
%c | 字符 |
%s | 字符串 |
%q | 带双引号字符串 |
%v | 内置格式内容 |
%T | 类型 |
%p | 内存地址 |
%% | 字符% |
\n | 换行 |
\t | 缩进 |
使用Scanln(&变量名,&变量名)的方式接收
package main
import "fmt"
func main() {
var name, age string
fmt.Print("请输入用户姓名和年龄:")
fmt.Scanln(&name, &age)
fmt.Println("接收到内容为:", name, age)
}
也可以使用fmt.Scanf(verb,&变量)按照特定的格式进行输入
package main
import "fmt"
func main() {
var a, b string
fmt.Println("请输入姓名和年龄:")
fmt.Scanf("%s\n%s", &a, &b)
fmt.Printf("%s\n%s", a, b)
}
需要注意,如果同行输入两个字符串,中间使用空格,否则编译器无法对输入内容进行拆分
// Fprintln formats using the default formats for its operands and writes to w.
// Spaces are always added between operands and a newline is appended.
// It returns the number of bytes written and any write error encountered.
func Fprintln(w io.Writer, a ...interface{}) (n int, err error) {
p := newPrinter()
p.doPrintln(a)
n, err = w.Write(p.buf)
p.free()
return
}
函数参数中第一个参数是输出流,后面参数是内容,表示把内容写入到输出流中
第一个返回值表示输出内容长度(字节数),第二个返回值表示错误,如果没有错误取nil
// doPrintln is like doPrint but always adds a space between arguments
// and a newline after the last argument.
func (p *pp) doPrintln(a []interface{}) {
for argNum, arg := range a {
if argNum > 0 {
p.buf.writeByte(' ')
}
p.printArg(arg, 'v')
}
p.buf.writeByte('\n')
}
FprintXX()支持下面三种方式
func main() {
fmt.Fprint(os.Stdout, "内容1")//向流中写入内容
fmt.Fprintln(os.Stdout, "内容2")//向流中写入内容后额外写入换行符
fmt.Fprintf(os.Stdout, "%s", "内容3")//根据verb格式向流中写入内容
}
func main(){
fmt.Println("内容1")//输出内容后换行
fmt.Print("内容2")//输出内容后不换行
fmt.Printf("verb","内容")//根据verb输出指定格式内容
}
// Println formats using the default formats for its operands and writes to standard output.
// Spaces are always added between operands and a newline is appended.
// It returns the number of bytes written and any write error encountered.
func Println(a ...interface{}) (n int, err error) {
return Fprintln(os.Stdout, a...)
}
// Sprint formats using the default formats for its operands and returns the resulting string.
// Spaces are added between operands when neither is a string.
func Sprint(a ...interface{}) string {
p := newPrinter()
p.doPrint(a)
s := string(p.buf)
p.free()
return s
}
fmt.Sprint("内容1", "内容2")
fmt.Sprintf()
fmt.Sprintln("1", "2")
关键字如下 | ||||
---|---|---|---|---|
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
保留字如下 | ||||
---|---|---|---|---|
true | false | iota | nil | int |
int8 | int16 | int32 | int64 | unit |
unit8 | unit16 | unit32 | unitptr | float32 |
float64 | complex128 | complex64 | bool | byte |
rune | string | error | make | len |
cap | new | append | copy | close |
deletecomplex | real | image | panic | recover |
//语法
//1.声明
var 变量名 类型
//2.赋值
变量名=值
//语法
var 变量名 类型 = 值
//实例
var smallming string = "英文名"
//语法
var 变量名 = 值
//语法
变量名 := 值
先声明后赋值
func main(){
var a,b,c int
a,b,c = 1,2,3
fmt.Println(a,b,c)
}
声明时赋值
func main(){
var a,b,c,d = 1,2,3,false
fmt.Println(a,b,c,d)
}
声明并赋值,推荐方式
func main(){
var (
a = 1
b = true
c = "测试"
)
fmt.Println(a,b,c)
}
使用短变量给多个变量赋值时,必须要保证至少有两个变量没有声明的
func main(){
var (
a = 1
b = true
c = "测试"
)
b,c,d := false, "smallming", 3
fmt.Println(a,b,c,d)
}
在GO语言中可以进行数据运算的类型分为整型和浮点型
所有的整数数字存储到整型中就可以进行数学运算
整型分为有符合整型和无符号整型
无符号整型只能取大于等于0的整数,其二进制最高位表示真实数字,unit和unitx为无符号整型
整型取值范围和作用
有符号整数统一公式为:-2的n-1次幂到2的n-1次幂减1
无符号整数统一公式为
类型 | 取值范围 |
---|---|
int8 | [-128,127] |
int16 | [-32768,32767] |
int32 | [-2147483648,2147483647],GO语言没有字符类型,所有字符都使用int32 |
int64 | [-92233722036854775808,9223372036854775807] |
int | 受限于计算机系统,系统是多少位,int为多少位 |
unit8 | [0,255] |
unit16 | [0,65535] |
unit32 | [0,4294967295] |
unit64 | [0,18446744073709551615] |
uint | 受限于计算机系统,系统是多少位,uint为多少位 |
rune | 与int32类似,常用在获取值的Unicode码 |
byte | 与uint8类似,强调值为原始数据,一个字节占用8个二进制 |
uintptr | 大小不确定,类似取决于底层编程 |
package main
import "fmt"
func main() {
//声明3个类型变量
var a int = 1
var b int32 = 2
var c int64 = 3
fmt.Println(a, b, c)
//把int32转换为int64
a = int(b)
fmt.Println(a, b)
a = 1
//把int64转换为int32
b = int32(c)
fmt.Println(b, c)
b = 2
//把int转换为int64
c = int64(a)
fmt.Println(a, c)
c = 3
}
package main
import "fmt"
func main() {
//默认表示十进制
d := 17
//0开头表示八进制
o := 021
//0x开头表示十六进制
x := 0x11
//e2表示10的2次方
e := 11e2
//输出
fmt.Println(d, o, x, e)
//把变量d中内容转为二进制
b := fmt.Sprintf("%b", d)
fmt.Println(b)
}
原文:https://www.cnblogs.com/wenha/p/12291731.html