package main // 声明 main 包,表明当前是一个可执行程序import"fmt"// 导入内置 fmt funcmain(){ // main函数,是程序执行的入口
fmt.Println("Hello World!") // 在终端打印 Hello World!
}
运行
go run main.go
2.变量常量数据类型
package main
import"fmt"var ( // 这种因式分解关键字的写法一般用于声明全局变量
a int
b bool
)
funcmain(){
/**
变量 声明必须使用
var name type / var name1,name2 type
默认0 false ''
以下为nil
*/// var a0 *int// var a1 []int// var a2 map[string] int// var a3 chan int// var a4 func(string) int// var a5 error // error 是接口var s float64
fmt.Printf("%v",s)
// 2.声明语句 := 只能用于函数体
intv := 1
fmt.Printf("%v", intv)
// 3.全局变量
fmt.Println(a,b)
// 4.值类型 (基本类型)布尔 数字 字符串// 5.引用类型 (a) 指针类型(Pointer) 数组类型 // 结构化类型(struct)Channel 类型函数类型 切片类型 接口类型(interface)Map 类型/*
常量
1.定义 const name [type] = (type可以省略)
2.用于枚举
3.iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
*/// 2.const (
Unknown = 0
Female = 1
Male = 2
)
println(Unknown,Female)
// 3.const (
ia = iota//0
ib //1
ic //2
id = "ha"//独立值,iota += 1
ie //"ha" iota += 1
fi = 100//iota +=1
ig //100 iota +=1
ih = iota//7,恢复计数
ii //8
)
println(ia,ib,ic,ii)
}
类型转化
package main
funcmain(){
var a int = 10var b float64 = float64(a)
//字符串->整型var str string = "10"var num int
num, err = strconv.Atoi(str) //strconv.Atoi 函数返回两个值,第一个是转换后的整型值,第二个是可能发生的错误//整型->字符串
num1 := 123
str1 := strconv.Itoa(num1)
//字符串->浮点型
str := "3.14"
num, err := strconv.ParseFloat(str, 64)
//浮点型->字符串
num := 3.14
str := strconv.FormatFloat(num, 'f', 2, 64)
//类型断言 接口类型->指定类型var i interface{} = "Hello, World"
str, ok := i.(string)
//类型转化 一个接口->另一个
}
3.语句
package main
funcmain(){
//条件
a := 10if a == 100 {
if a < 10{
} else {
}
} else {
}
/**
循环
1.for
for init; condition; post {}
for condition{}
for {}
for key,value := range mapName{}
for _, value := range oldMap
*/// for i := 0; i <= 10; i++{// }// sum := 1;// for ; sum <= 10; {// sum = sum + sum;// }// for sum<=10{// sum = sum + sum;// }
str := []string{"lwx","lwx1"}
for i,v :=range str {
println(i , v)
}
}
package main
funcmain(){
/**
数组
1.声明 var arrayName [size]type{}
arrName := [size]type{}
二维
1.声明 var name [][]type{ {},{}}
数组参数
*/
arr := [5]int{1,2,4,5,6}
println(arr[0]);
test(arr)
}
functest(arr []int) {
}
6.指针
package main
funcmain(){
/**
指针
1.声明 &a 内存地址
var name *type = &name
*/
a := 10;
println(&a)
var ip *int;
ip = &a;
println(*ip)//值println(ip)//地址
}
7.结构体
package main
import"fmt"type structName struct {
name string
age int
}
funcmain(){
fmt.Println(structName{"123",2});
fmt.Println(structName{name:"123", age:2});
var s1 structName
s1.title = "title"
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南