一、数据类型
1.常用
bool、int、float32、float64、string
float64 比 float32 更准确
2.字符
var ch byte
ch = 97
fmt.Printf("%c, %d\n", ch, ch)
a, 97
3.字符串
str := "hello"
fmt.Println("len(str)= ", len(str)) //内建函数.len
len(str)= 5
//字符串和字符
str := "hello"
fmt.Println("len(str)= ", len(str))
fmt.Printf("str[0] = %c ,str[1] = %c", str[0], str[1]) //可以直接取出字符串的字符
str[0] = h ,str[1] = e
4.复数
var t complex128
t = 2.1 + 3.2i
fmt.Println("t = ", t)
t1 := 2.2 + 2.87i
fmt.Printf("t1 type is %T\n", t1)
//通过内建函数去得实部和虚部
fmt.Println("real(t1) = ", real(t1), ",imag(t1) = ", imag(t1))
t = (2.1+3.2i)
t1 type is complex128
real(t1) = 2.2 ,imag(t1) = 2.87
5.格式化输出
package main
import "fmt"
func main() {
a := 10
b := "abc"
c := 'a'
d := 3.14
fmt.Printf("%T,%T,%T,%T\n", a, b, c, d)
//常用的 %d %s %c %f
fmt.Printf("a= %d, b = %s, c = %c, d = %f\n", a, b, c, d)
//%v万能匹配格式,对字符操作不友好
fmt.Printf("a= %v, b = %v, c = %v, d = %v\n", a, b, c, d)
}
int,string,int32,float64
a= 10, b = abc, c = a, d = 3.140000
a= 10, b = abc, c = 97, d = 3.14
6.输入函数
var m int
fmt.Printf("请输入变量m:")
//fmt.Scanf("%d", &m)
fmt.Scan(&m) //也可以
fmt.Printf("m = %d\n", m)
请输入变量m:666
m = 666
7.类型转换
package main
import "fmt"
func main() {
var flag bool
flag = true
fmt.Printf("flag = %t\n", flag)
// bool类型不能转换为int类型,同样的int也不能转换为bool
// 这种类型叫不兼容类型
// fmt.Printf("flag = %d\n", (int)flag)
var ch byte
ch = 'a'
var t int
t = int(ch) //字符类型本质上就是整型,这种兼容类型可以转换
fmt.Println("t = ", t)
}
flag = true
t = 97
8.类型别名(重要)
package main
import (
"fmt"
)
func main() {
//bigint 为新定义的别名
type bigint int64
var a bigint
fmt.Printf("a type is %T\n", a)
type (
long int64
char byte
)
var b long = 11999
var ch char = 'a'
fmt.Printf("b = %d, ch = %c\n", b, ch)
}
a type is main.bigint
b = 11999, ch = a
9.运算符
/*
+ - * /
% 取模(取余)
++ 后自增,没有前自增
-- 后自减,没有前自减
注意没有 ++a 或者--a ,只有后置的a++ , a--
== != < > <= >=
逻辑运算符
! 非
&& 与
|| 或
位运算
& 按位与
| 按位或
^ 异或
<< 左移
>> 右移
取地址运算符
&
取值运算符
*
*/