demo1:
package main import ( "fmt" "strings" ) func main() { url := pathToUrl("www.baidu.com", "https") isUrl(url) } func isUrl(url string) { http := strings.HasPrefix(url, "http://") https := strings.HasPrefix(url, "https://") if http || https { fmt.Printf("%s 是一个URL", url) } else { fmt.Printf("%s 不是一个URL", url) } } func pathToUrl(path string, protocol string) string { var result string if protocol == "http" || protocol == "https" { result += protocol result += "://" result += path return result } else { return "" } }
分析:
1.字符串的基本使用
2.strings包还有其他的一些函数,会在下面介绍
demo2:
package main import ( "fmt" "strconv" "strings" ) func main() { str := " hello world hahaha " result1 := strings.Replace(str, "world", "earth", 1) fmt.Println(result1) // hello earth hahaha result2 := strings.Count(str, "ha") fmt.Println(result2) //3 result3 := strings.ToUpper(str) fmt.Println(result3) // HELLO WORLD HAHAHA result4 := strings.TrimSpace(str) fmt.Println(result4) //hello world hahaha result5 := strings.Fields(str) fmt.Println(result5) //[hello world hahaha] result6 := strings.Join(result5, "0") fmt.Println(result6) //hello0world0hahaha result7 := strconv.Itoa(666) fmt.Println(result7) //666 result8, err := strconv.Atoi("666") if err != nil { fmt.Println("can not convert to int:", err) } fmt.Println(result8) //666 }
分析:
1.一些字符串的基本操作
2.其他的功能直接查文档即可,很简单
demo3:
package main import ( "fmt" "time" ) func main() { start := time.Now().UnixNano() now := time.Now() theTime := now.Format("2006/01/02 15:05:05") fmt.Println(theTime) //2019/03/25 14:07:07 end := time.Now().UnixNano() fmt.Printf("程序共耗时:%d微秒", (end-start)/1000) }
分析:
1.格式化函数format,必须使用2006/01/02 15:05:05这个日期,Go规定的
2.这里统计程序运行时间的方法,在日后开发中会经常用到
demo4
package main import "fmt" func main() { var a int = 10 fmt.Printf("%d\n", a) //10 var p *int = &a fmt.Printf("%d->%d\n", p, *p) //824633794696->10 var b int = 5 //*p = b //fmt.Println(a) //5 p = &b fmt.Println(a) //10 modify(p) fmt.Printf("a:%d b:%d\n", a, b) //a:10 b:666 modify(&a) fmt.Printf("a:%d b:%d\n", a, b) //a:666 b:666 } func modify(p *int) { *p = 666 return }
分析:
1.指针的巩固练习
2.*p=b:p指向b,因为p是a的地址,所以a的值变成了b的值
3.p=&b:p是a的地址,指向a,这时候把b的地址赋值给p,但指向没有变。a,b的值都没有变,a和b的地址也没有变,*p的值变成5
4.第一次Modify:这时的p已经是b的地址了,所以如果修改了p的指向,那么其实就直接修改了b的值
5.第二次Modity:这里就是很正常地修改了a的值
demo5:
package main import "fmt" func main() { str := "hello world!" for index, value := range str { fmt.Printf("index[%d] value:%c\n", index, value) } /*输出前三行如下 index[0] value:h index[1] value:e index[2] value:l */ }
分析:
1.除了基本地for循环,go有另一种for循环,很方便,值得学习
demo6:
package main import "fmt" type op_func func(int, int) int func add(a, b int) int { ret