基本练习

格式化 

func main(){
	fmt.Printf("this is %s", "jab")	// 字符串显示
	fmt.Println()
	fmt.Printf("this is %x", "jab")	// 16进制显示
	fmt.Println()
	fmt.Printf("this is %.3f", 3.33333)		// 浮点型显示
	fmt.Println()
	fmt.Printf("this is %b", 100)		// 整型以二进制显示
	fmt.Println()
	fmt.Printf("this is %d", 100)		// 整形十进制显示
}
--->
this is jab
this is 6a6162
this is 3.333
this is 1100100
this is 100

  

 strings&strconv

package main

import (
	"fmt"
	"strconv"
	"strings"
)

var (
	url = "baidu.com"
	dir = "/data/app"
	dir2 = "/data/app/"
	data = "  name=jab  "
	a = "a"
	n = 2
)


func stringsTest() {
	// 判断以字符开头
	if ! strings.HasPrefix(url,"http://") {
		url = "http://" + url
	}
	// 判断以字符结尾
	if ! strings.HasSuffix(dir, "/") {
		dir = dir + "/"
	}
	fmt.Println(url)
	fmt.Println(dir)

	// 脱去空白字符,脱去左边字符串,脱去右边字符串
	data = strings.TrimSpace(data)
	dir2 = strings.TrimLeft(dir2,"/")
	dir3 := strings.TrimRight(dir2,"/")
	fmt.Println(data,dir2,dir3)

	// 分割字符串为切片
	s := strings.Split(dir, "/")
	for i:=0;i<len(s);i++ {
		fmt.Println(s[i])
	}

	// 将切片组合为字符串
	s2 := strings.Join(s,"/")
	fmt.Println(s2)
}

func strconvTest() {
	// int转str
	// str转int
	fmt.Println(strconv.Itoa(n))
	result,err := strconv.Atoi(a)
	if err != nil {
		fmt.Println("error..msg=", err)
	} else {
		fmt.Println(result)
	}
}

func main() {
	stringsTest()
	strconvTest()
}

  

time

func atime() {
	// 获取当前时间,使用当前时间的参数格式化时间
	//Format格式化必须使用这个时间,然后自己定义格式。
	now := time.Now()
	fmt.Printf("%d%02d%02d-%02d:%02d:%02d",now.Year(),now.Month(),now.Day(),now.Hour(),now.Minute(),now.Second())
	fmt.Println()
	fmt.Println(now.Format("2006/01/02 15:04:05"))
	time.Sleep(time.Second*2)
}

func main() {
	// 计算函数耗时
	startclock := time.Now().UnixNano()
	atime()
	endclock := time.Now().UnixNano()
	fmt.Println("cost time:",endclock - startclock)
}

  

函数

函数变量

//type 类型申明
// add_func 名称
// func(int, int) int 类型,在这里是个函数
type add_func func(int, int) int

func add(a, b int) int{
	return a + b
}

// 传递一个函数变量,要求是add_func这个类型,c是add函数变量,符合这个类型
func operator(op add_func, a int, b int) int {
	return op(a, b)
}

func main() {
	c := add
	fmt.Println(c)
	sum := operator(c, 100, 200)
	fmt.Println(sum)
}

  

变长变量

// 一个或多个int相加,返回结果
func add2(a int, arg...int) (sum int) {
	sum = a
	for i := 0; i < len(arg); i++ {
		sum = sum + arg[i]
	}
	return sum
}

// 一个或多个字符串拼接
func concat(s string, arg...string) (ss string) {
	ss = s
	for i := 0; i < len(arg); i++ {
		ss = ss + arg[i]
	}
	return ss
}

  

匿名函数

// 匿名函数,函数后面直接跟传参
func niming(a ,b int) {
	result := func(x, y int) int{
		return x + y
	}(a,b)
	fmt.Println(result)
}

  

for循环

package main

import "fmt"

// for循环练习
func main() {
	for i := 1; i < 10; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%d * %d = %d  ",i, j, i*j)
		}
		fmt.Println()
	}
}

 

// 输入一个数,判断是否是整数
func test1() {
	// for {}相当于while True,无限循环
	for {
		var str string
		fmt.Scanf("%s",&str)
		a,error := strconv.Atoi(str)
		if error != nil {
			fmt.Println("error!")
			return
		}
		fmt.Println(a)
	}
}

  

切片

package main

import "fmt"

// slice练习
func main() {
	s1 := make([]int, 5, 100)	// 使用make函数创建int切片,len为5,cap为100
	s2 := []string{"Jack", "Mark", "Nick"}		// 使用字面量创建string切面,len和cap都是4
	s3 := []int{}		// 空切片

	// 按索引给s1赋值
	for i := 0; i < len(s1); i++{
		s1[i] = i
	}
	fmt.Println(s1)

	// 打印s2的所有元素
	for i := 0; i < len(s2); i++{
		fmt.Println(s2[i])
	}

	// 往s3里追加元素
	for i :=0; i < 10; i++{
		s3 = append(s3, i)
	}
	fmt.Println(s3)
}
// []int空切片
// append(切片,加入的元素)
// a...表示a里面的所有元素
func slice() {
	var a []int
	var b []int
	a = append(a,1,2,3,4)
	b = append(a,a...)
	fmt.Println(a)
	fmt.Println(b)
}

  

  

 

 

posted @ 2019-08-01 21:25  jabbok  阅读(160)  评论(0编辑  收藏  举报