1.入门
package main
import "fmt"
# 枚举
package main
import "fmt"
func main() {
//iota枚举
//1.iota 常量自动生成器,每个一行,自动增 1
//2.iota 给常量赋值使用
//3. iota 遇到 const ,重置为 0
//4. 可以只写一个
//5.如果是同一行值都一样
const (
a = iota
b = iota
c = iota
)
fmt.Println("a , b , c" , a ,b ,c)
fmt.Printf("a = %d, b = %d , c = %d \n", a ,b ,c)
const (
d = iota
e = iota
)
fmt.Println("d , e" , d ,e )
fmt.Printf("d = %d, e = %d \n", d ,e)
const (
a1 = iota
b1
c1
)
fmt.Printf("a1 = %d ,b1 = %d ,c1 = %d\n", a1, b1, c1)
const (
a2 = iota
a31 , a32 ,a33 = iota, iota , iota
a4 = iota
)
fmt.Printf("a2 = %d, a31 = %d , a32 = %d , a33 = %d , a4 = %d \n" , a2 , a31, a32 ,a33 , a4)
}
3.别名
package main
import "fmt"
func main() {
//类型别名
type minint int
var a minint
fmt.Printf("a is %T\n", a)
}
7.break continue
package main
import (
"fmt"
"time"
)
func main() {
var i = 0
for {
i++
time.Sleep(time.Second)
if i == 5 {
//break
continue
}
fmt.Println("i =" , i)
}
}
9.函数
package main
import "fmt"
func main() {
Myfunc01()
MyFunc02(777, 888)
MyFunc03()
MyFunc03(1)
MyFunc03(1,2,3)
a := MyFunc04()
fmt.Println(a)
a, b ,c := MyFunc05()
fmt.Println(a ,b ,c)
}
//无参无返回值
func Myfunc01 (){
a := 666
fmt.Println("a = ", a)
}
//有参无返回值
func MyFunc02(a , b int){
fmt.Println("a = ", a , "b = " , b)
}
//不定参数类型 ...type 推荐写法
func MyFunc03(args ...int){
fmt.Println(args)
for i := 0; i < len(args); i++{
fmt.Printf("args[%d] = %d \n", i, args[i])
}
for i, data := range args{
fmt.Printf("args[%d] = %d \n", i, data)
}
}
//无参有返回值
func MyFunc04() (result int){
result = 111
return
}
//无参有多个返回值 推荐写法
func MyFunc05() (a , b , c int){
a , b ,c = 111,222,333
return
}
10.
package main
import (
"fmt"
)
func main(){
max , min := MaxMin( 10,20)
fmt.Printf("max = %d , min = %d \n" , max , min)
a , _ := MaxMin(10, 20)
fmt.Printf("a = %d \n" ,a)
}
//有参有返回值
func MaxMin(a , b int) (max , min int){
if a > b {
max = a
min = b
}else {
max = b
min = a
}
return //有返回值时,必须通过 return 返回
}
11.递归
package main
import (
"fmt"
)
func main(){
Test01(5)
fmt.Println("main")
Test02 := Test02()
fmt.Println("Test02 = " , Test02)
Test03 := Test03(100)
fmt.Println("Test03 = " , Test03)
Test04 := Test04(1)
fmt.Println("Test04 = " , Test04)
}
//递归函数的调用流程
func Test01(a int) {
if a == 1 {
fmt.Println("a = ", a)
return
}
Test01(a - 1)
fmt.Println("a = " , a )
}
// 一般
func Test02 () (sum int){
for i := 1; i <= 100; i++{
sum += i
}
return
}
//递归累加
func Test03(i int) int {
if i == 1 {
return 1
}
return i + Test03(i - 1)
}
func Test04(i int) int {
if i == 100 {
return 100
}
return i + Test04(i + 1)
}
12.多态
package main
import (
"fmt"
)
func main(){
var result int
var ftest Ftest
ftest = Add
result = ftest(10 , 20)
fmt.Println("result = " , result)
ftest = Minus
result = ftest(10 , 20)
fmt.Println("result = " , result)
}
// 函数类型 -- 多态
// add
func Add( a ,b int) int{
return a + b
}
// Minus
func Minus( a ,b int) int{
return a - b
}
// 函数也是一种数据类型,通过 type 给函数起一个名字 ,函数没有名字和 {}
type Ftest func(int , int ) int
13
package main
import (
"fmt"
"strconv"
)
func main(){
var a int = 64
b := strconv.Itoa(a)
fmt.Println(b)
}
14.array
package main
import (
"fmt"
)
func main(){
var a = [...]int{1,2,39,3,2,1}
fmt.Println(a)
num := len(a)
fmt.Println(num)
for i := 0 ; i < num ; i++ {
for j := i +1 ; j < num ; j++ {
if a[i] > a[j]{
temp := a[i]
a[i] = a[j]
a[j] = temp
}
}
}
fmt.Println(a)
}