xone

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

strings和strconv使用

1、strings.HasPrefix(s string, prefix string) bool:判断字符串s是否以prefix开头

2、strings.HasSuffix(s string, suffix string) bool: 判断字符串s是否以suffix结尾

3、strings.Index(s string, str string) int:判断str在s中首次出现的位置,如果没有出现,则返回-1

4、strings.LastIndex(s string, str string) int: 判断str在s中最后出现的位置,如果没有出现,则返回-1

5、strings.Replace(str string, old string, new string, n int) : 字符串替换

6、strings.Count(str string, substr string) int: 字符串计数

7、strings.Repeat(str string, count int) string: 重复count次str

8、strings.ToLower(str string) string: 转为小写

9、strings.ToUpper(str string) string: 转为大写

10、strings.TrimSpace(str string):去掉字符串首尾空白字符

  strings.Trim(str string, cut string):去掉字符串首尾cut字符

  strings.TrimLeft(str string, cut string):去掉字符串首cut字符

  strings.TrimRight(str string, cut string):去掉字符串首cut字符

11、 strings.Field(str string):返回str空格分隔的所有子串的slice

  strings.Split(str string, split string):返回str split分隔的所有子串的slice

12、 strings.Join(s1 []string, sep string):用sep把s1中的所有元素链接起来

13、 strconv.Itoa(i int):把一个整数i转成字符串

14、 strconv.Atoi(str string)(int, error):把一个字符串转成整数

 

时间和日期类型
1. time包
2. time.Time类型,用来表示时间
3. 获取当前时间, now := time.Now()
4. time.Now().Day(),time.Now().Minute(),time.Now().Month(),time.Now().Year()
5. 格式化,fmt.Printf(“%02d/%02d%02d %02d:%02d:%02d”, now.Year()…)
6. time.Duration用来表示纳秒
7. 一些常量:
const (
  Nanosecond Duration = 1
  Microsecond = 1000 * Nanosecond
  Millisecond = 1000 * Microsecond
  Second = 1000 * Millisecond
  Minute = 60 * Second
  Hour = 60 * Minute
  )
8. 格式化:
now := time.Now()
fmt.Println(now.Format(“02/1/2006 15:04:05”))
fmt.Println(now.Format(“2006/1/02 15:04”))
fmt.Println(now.Format(“2006/1/02”))

 

 

流程控制

例一:

package main

import "fmt"

func main()  {
	var a int = 5
	switch a {
	case 0,1,2,3,4,5:	//a等于0,1,2,3,4,5都匹配
		fmt.Println("a is equal 0")
		fallthrough		//不退出继续向下执行
	case 10:
		fmt.Println("a is equal 10")
	default:
		fmt.Println("a is equal default")
	}
}

 

例二:for range

package main

import "fmt"

func main()  {
	str := "hello, world,中国"
	for i, v := range str {
		fmt.Printf("index[%d] val[%c] len[%d]\n",i, v, len([]byte(string(v))))
	}
}

  

例三:break continue

package main

import "fmt"

func main()  {
	str := "hello world,中国"
	for i, v := range str {
		if i > 2 {
			continue
		}
		if (i > 3) {
			break
		}
		fmt.Printf("index[%d] val[%c] len[%d]\n", i, v, len([]byte(string(v))))
	}
}

  

例四: 

package main
import "fmt"
func main() {
LABEL1:
	for i := 0; i <= 5; i++ {
		for j := 0; j <= 5; j++ {
			if j == 4 {
				continue LABEL1
			}
			fmt.Printf("i is: %d, and j is: %d\n", i, j)
		}
	}
}  

 

例五:

package main

func main()  {
		i := 0
	HERE:
		print(i)
		i++
		if i == 5 {
			return
		}
		goto HERE
}

 

函数

一、golang函数特点

  a、不支持重载,一个包不能有两个名字一样的函数

  b、函数是一等公民,函数也是一种类型,一个函数可以赋值给变量

  c、匿名函数

  d、多返回值

 例一:

package main

import "fmt"

type add_func func(int, int) int

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


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)
}

  

二、函数参数传递方式

  1、值传递

  2、引用传递

 注意1:无论是值传递,还是引用传递,传递给函数的都是变量的副本,不过,值传递是值的拷贝。引用传递是地址的拷贝,一般来说,地址拷贝

更为高效。而值拷贝取决于拷贝的对象大小,对象越大,则性能越低。

 

 

 

 

 

 

 

 

 

  

 

posted on 2018-06-26 10:39  周小百  阅读(142)  评论(0编辑  收藏  举报