1.chan-数据交换
package main import ( "fmt" "time" ) func add(a int,b int,c chan int){ sum :=a+b time.Sleep(3*time.Second) c<-sum } func main(){ pipe:=make(chan int,1) go add(10,20,pipe) sum:= <-pipe fmt.Println("10+20=",sum) }
2.函数返回2个值
package main import ( "fmt" "time" ) func calc(a int, b int) (int, int) { sum := a + b avg := (a + b) / 2 return sum,avg } func add(a int, b int, c chan int) { sum := a + b time.Sleep(3 * time.Second) c <- sum } func main() { sum, avg := calc(10, 20) // sum, _ := calc(10, 20) fmt.Println("sum=", sum,"avg=",avg) }
3.随机数rand
package main import ( "math/rand" "fmt" "time" ) func main() { rand.Seed(time.Now().Unix()) //10个随机数 for i := 0; i < 10; i++ { a := rand.Int() fmt.Println(a) } for i := 0; i < 10; i++ { a:=rand.Intn(100) fmt.Println(a) } for i := 0; i < 10; i++ { a:=rand.Float32() fmt.Println(a) } }
4.fmt的scanf格式化输出
package main import "fmt" func main() { var a int var b bool c:= 'a' fmt.Printf("%v ",a)//相应值的默认格式。在打印结构体时,“加号”标记(%+v)会添加字段名 fmt.Printf("%v ",b) fmt.Printf("%v ",c) fmt.Printf("%+v ",a)//相应值go语法表示 fmt.Printf("%#v ",b) fmt.Printf("%#v ",c) fmt.Printf("%T ",c) //打印出值的类型 fmt.Printf("90%% ") //转义百分号 fmt.Printf("%t ",b) //单词true 或 false fmt.Printf("%b ",100) //二进制打印 fmt.Printf("%s ","hello word") //字符串 fmt.Printf("%q ","this is a test") //双引号围绕的字符串,由Go语法安全地转义 fmt.Printf("%x ",5486) //十六进制小写 fmt.Printf("%X ",5486) //十六进制大写 fmt.Printf("%p ",&c) //打印指针 str := fmt.Sprintf("a = %d",100) //打印到变量,数字转换成字符串 fmt.Printf("%q",str)
a:=strconv.Itoa(10)
fmt.Printf("%T ",a)//string
fmt.Printf("%v ",a)//10
fmt.Printf("%#v ",a)//"10"
fmt.Printf("%q ",a)//"10"
}
5 素数
package main import ( "fmt" "math" ) //100-200之间的素数 func is_sushu(num int) bool { for i := 2; i <= int(math.Sqrt(float64(num))); i++ { if num % i == 0 { return false } } return true } func main() { var ( a int b int ) fmt.Scanf("%d,%d", &a, &b) for i := a; i <= b; i++ { if is_sushu(i) { fmt.Printf("%d是素数 ", i) } else { fmt.Printf("%d不是素数 ", i) } } }
6 水仙花数
package main import "fmt" //水仙花数 func is_shuixianhua(a int) bool { var i, j, k int i = a % 10 j = (a / 10) % 10 k = (a / 100) % 10 return a == i * i * i + j * j * j + k * k * k } func main() { var a, b int fmt.Scanf("%d%d", &a, &b) fmt.Println(a, b) for i := a; i < b; i++ { if is_shuixianhua(i) { fmt.Printf("%d 是水仙花数 ", i) } } }
7 阶乘和
package main import "fmt" func jiecheng(a int) int64{ var result int64 = 0 for i:=1;i<=a;i++{ //求i的阶乘 var sum int = 1 for j := 1; j <= i; j++ { sum = sum*j } result = result+int64(sum) } return result } func jie_cheng2(num int) int64{ var s int64 = 0 var sum int64 = 1 for i:=1;i<=num;i++ { //sum 存i的阶乘 sum = sum*int64(i) s = s+sum } return s } func main() { var a = 5 s:=jiecheng(a) fmt.Println(s) s=jie_cheng2(a) fmt.Println(s) }