02
04月
2025
package main
import "fmt"
var hm = 11 //全局变量 hm := 11 全局变量不能用短变量声明
//注意变量不能重复声明 下面代码块不能直接运行
func getinfo() (string, int) {
return "hello world", 100
} //定义方法
func main() {
var a int //常规定义变量 变量定义之后必须使用
a:=1 //类型推导方式定义变量
var (
a int
b int
c int
)
var a,b,c string //一次定义多个变量
a,b,c:=1,2,3 // 定义加赋值
var a int=1
var a=1
const pi=3.1415926 //定义常量 必须直接赋值 赋值不能更改
const(
A="A"
B="B"
C
) //多个常量定义 不赋值默认跟上一行同值
const (
A = iota
B
C
D
)
//iota初始为0 自增
//println 可以换行 多数据输出有空格 print不会换行 多数据输出没有空格
fmt.Printf("Hello, %s!\n", "world")
fmt.Println("Hello, world!")
fmt.Print("Hello", "world")
fmt.Printf("Hello, %s!\n", "world")
a := 10
var b int = 20
var c int = 30
fmt.Println("a =", a, "b =", b, "c =", c)
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
s, i := getinfo() //使用方法返回值定义变量
fmt.Println(s, i)
s, _ := getinfo() //只定义一个变量 用 _ 代表匿名变量
fmt.Println(s)
}
数据类型
//int类型
//有符号的类型
var num int8 = 127 //范围 -128到127 1个字节
var num2 int16 = 32767 //范围 -32768到32767 2个字节
var num3 int32 = 2147483647 //范围 -2147483648到2147483647 4个字节
var num4 int64 = 9223372036854775807 //范围 -9223372036854775808到9223372036854775807 8个字节
//没有符号的类型
var num5 uint8 = 255 //范围 0到255 1个字节
var num6 uint16 = 65535 //范围 0到65535 2个字节
var num7 uint32 = 4294967295 //范围 0到4294967295 4个字节
var num8 uint64 = 18446744073709551615 //范围 0到18446744073709551615 8个字节
fmt.Printf("num8=%v 类型:%T", num8, num8) //%T 得到数据类型
fmt.Println(unsafe.Sizeof(num4)) //unsafe.Sizeof 得到字节长度
var num9 = int16(num) //类型转换 需要注意字节够不够
//Printf %v 原样输出; %d 10进制输出; %b 2进制输出; %o 8进制输出; %x 16进制输出;
num10 :=100 //32位操作系统表示类型为int32 64位操作系统表示类型为int64
fmt.Printf("num10=%v 类型:%T\n", num10, num10)
//float类型
var float1 float32 = 3.14 // float32 占4个字节
var float2 float64 = 3.14 // float64 占8个字节 64位操作系统默认
//Printf %v 原样输出; %f 保留6位小数; %.2f 保留两位; %.4f 保留4位;带f格式化输出 都是四舍五入
var f1 float32 = 3.14e2 //表示赋值3.14 * 10的二次方 3.14*100
var f2 float64 = 3.14e-2 //表示赋值3.14 / 10的二次方 3.14/100
f1=float64(f1) //转换flaot64类型
//需要处理float精度丢失问题
//布尔类型
var bol bool //默认为false 整数类型无法转换为布尔类型
fmt.Printf("值: %v , 类型: %T", bol, bol)
//字符串类型
var str string = "Hello, World!"
str2 := `Hello, World!
Hello, World!
Hello, World!
` //多行字符串
// \r 回车 \n 换行符 \t 制表符
fmt.Println(len(str2)) //len得到字符串长度 一个汉字3个字节 unsafe.Sizeof无法查看字符串占用的存储空间
fmt.Println(str + str2) //+ 号拼接字符串
str3 := fmt.Sprintf("%s %s", str, str2) //fmt.Sprintf也能拼接字符串
arr := strings.Split(str, ",") //strings.Split 切割字符串 切片
str = strings.Join(arr, ",") //strings.Join 切片转换为字符串
arr2 := []string{"Hello", "World!"} //定义切片
flag := strings.Contains(str, "H") //strings.Contains 是否包含某个字符串 返回bool
flag2 := strings.HasPrefix(str, "H") //前缀是否包含 返回bool
flag3 := strings.HasSuffix(str, "!") //后缀是否包含 返回bool
snum := strings.Index(str, "H") //查找目标字符串出现在某字符串的位置 返回第一次出现的下标 找不到返回-1 下标从0开始 strings.LastIndex 返回最后一次出现的下标
//字符 byte uint8类型 代表ASCII码字符 rune 代表UTF-8字符
a := 'a' //字符用单引号定义 只能是一个字符 字符值为int类型 %c可以原样输出
s := "big"
bytes := []byte(s)
bytes[0] = 'p'
s = string(bytes) //修改字符串 big 为 pig
s2 := "大家好"
runes := []rune(s2)
runes[0] = '小'
s2 = string(runes) //修改字符串 大家好 为 小家好
var i int = 10
var f float32 = 3.14
var t bool = true
var b byte = 'a'
str1 := fmt.Sprintf("i=%d, f=%f, t=%t, b=%c", i, f, t, b) //fmt.Sprintf 将各种类型转换为字符串 int对应%d float对应%f bool对应%t byte对应%c
非特殊说明,本文版权归 Code. 所有,转载请注明出处.
本文标题: golang定义变量,输出内容,数据类型
延伸阅读
golang定义变量,输出内容,数据类型 学习golang第一步最新|与我有关
重庆 2025年04月02日 15时02分09秒 回复