GO练习题 - 草稿

1、获取当前系统标准时间并显示,将其转化为中文时间格式并显示,结果如下

当前标准时间:3455435455  中文显示为:2021年1月7日 15:30:30

package main

import "fmt"

import "time"

func main(){

        now:=time.Now()

        fmt.Println(now)

        fmt.Println("标准时间:",now.Unix())

        fmt.Println(now.Format("2006-01-02 15:04"))

        year:=now.Year()

        month:=now.Month()

        day:=now.Day()

        hour:=now.Hour()

        minute:=now.Minute()

        second:=now.Second()

        fmt.Printf("%d年%d月%d日 %d:%d:%d\n",year,month,day,hour,minute,second)

}

2. 数字32768和字符串“65535”实现数字和字符串之间的互相转化并输出,同时使用%T输出数据类型。

package main

import "fmt"

import "strconv"

func main(){

        var i int=32765

        var j string="65535"

        k:=strconv.Itoa(i)

        fmt.Printf("%T:%s\n",k,k)

        x,_:=strconv.Atoi(j)

        fmt.Printf("%T:%d\n",x,x)

}

3.输入一个字符串将其进行MD5后输出字符串。

package main

import "fmt"

import "crypto/md5"

func main() {

        var input string

        print("请输入一个字符串:")

        fmt.Scanf("%s", &input)

        fmt.Printf("输入字符串为:%s\n",input)

        data := []byte(input)

        md5 := md5.Sum(data)

        fmt.Printf("md5后的值为:%x\n", md5)

}

4.建立一个100-999的随机数切片并排序输出,每行5个。

package main

import "fmt"

import "math/rand"

import "time"

import "sort"

func main() {

        rand.Seed(time.Now().UnixNano()) //以纳秒当前时间设置种子

        var data []int

        for i := 0; i < 100; i++ {

                data=append(data,rand.Intn(1000)) //1000以内随机整数

                if (i+1)%5 == 0 {

                        fmt.Printf("%d\t\n", data[i])

                } else {

                        fmt.Printf("%d\t", data[i])

                }

        }

        println("")

        sort.Ints(data)

        for i := 0; i < 100; i++ {

                if (i+1)%5 == 0 {

                        fmt.Printf("%d\t\n", data[i])

                } else {

                        fmt.Printf("%d\t", data[i])

                }

        }                   

5.建立一个8位长的随机字符串数组str[50]并json输出。

6.输入一个球体半径,输出表面积和体积。要求用结构体和两个方法分别计算表面积和体积。

7.定义字符串切片,append 3个字符串后打印输出并输出长度和最大容量。
package main

import "fmt"

func main() {

        var str []string

        str=append(str,"sunjian")

        str=append(str,"Renting")

        str=append(str,"Renxxiao")

        fmt.Printf("%s\tLenth:%d\tCap:%d\n",str[0],len(str),cap(str))

        fmt.Printf("%s\tLenth:%d\tCap:%d\n",str[1],len(str),cap(str))

        fmt.Printf("%s\tLenth:%d\tCap:%d\n",str[2],len(str),cap(str))

}

8.利用不定参函数计算所有参数之和。

package main

func add(x ...int) int {

        total := 0

        for _, i := range x {

                total = total + i

        }

        return total

}

func main() {

        println(add(10, 20, 30, 40, 50, 60, 70, 80, 90, 100))

}

9.输出10000个hello world!查看执行时间
package main
import (

        "time"

        "fmt"

)

func main(){

        begin:=time.Now()

        for i:=0;i<10000;i++{

        println("Hello World !")

        }

        sp:=time.Since(begin)

        fmt.Printf("程序执行时间:%v",sp)

}

10

解决这个叫做 Fizz-Buzz 的问题: 编写一个程序,打印从 1 到 100 的数字。当是3个倍数数就打印 “Fizz” 代替数字,当是5的倍数就打印 “Buzz” 。当数字同时是3和5的倍数 时,打印 “FizzBuzz” 。

11.建立一个 Go 程序打印下面的内容(到 100 个字符):

      A

      AA

      AAA

      AAAA

      AAAAA

      AAAAAA

      AAAAAAA

12.建立一个程序统计字符串里的字符数量: asSASA ddd dsjkdsjs dk 同时输出这个字符串的字节数。 提示: 看看 unicode/utf8 包。

扩展/修改上一个问题的程序,替换位置 4 开始的三个字符为 “abc”。

13.编写一个 Go 程序可以逆转字符串,例如 “foobar” 被打印成 “raboof”。

编写计算一个类型是 float64 的 slice 的平均值的代码。
package main

import "fmt"

func main(){

        f:=[]float64{4.5,5,3,6,8,10.3}

var total float64=0

for i:=0;i<len(f);i++{

        total=f[i]+total

}

fmt.Printf("avg=%f\n",total/float64(len(f)))

}

14.编写函数,返回其(两个)参数正确的(自然)数字顺序:

15.编写函数接受整数类型变参,并且每行打印一个数字。
package main

import "fmt"

func res( a ...int){

        for _,b:=range a{

        fmt.Printf("%d\t",b)

        }

}

func main(){

        res(5,7,8,30,29,4-4,5067)

16.斐波那契数列以:1,1,2,3,5,8,13,... 开始。或者用数学形式表达:x 1 = 1;x 2 = 1;x n = x n−1 + x n−2 ∀n > 2。 编写一个接受 int 值的函数,并给出这个值得到的斐波那契数列。

17.编写一个函数,找到 int slice ( []int ) 中的最大值和最小值。

18.编写一个针对 int 类型的 slice 冒泡排序的函数

19.编写一个函数返回另一个函数,返回的函数的作用是对一个整数 +2。函数的名 称叫做 plusTwo 。然后可以像下面这样使用: p := plusTwo() fmt.Printf("%v\n", p(2)) 应该打印 4。

20.编写一个程序,模仿 Unix 的 cat 程序。对于不知道这个程序的人来说,下面的 调用显示了文件 的内容:

使其支持 n 开关,用于输出每行的行号

21.实现斐波拉契 使用channel。

22. 定义一个包括8个字符串的切片,输出下标3-5的字符串,输出前5个字符串,输出6以后字符串。

23.题目: 有1、2、3、4个数字,可以组成多少个互不相同并且无重复数字的三位数?都是多少?

package main

import "fmt"

func main() {

    for i := 1; i < 5; i++ {

        for j := 1; j < 5; j++ {

            for k := 1; k < 5; k++ {

                if (i != k) && (i != j) && (j != k) {

                    fmt.Println("这个数是: ", i, j, k)

                }

            }

        }

    }

}

24.输入一个不定长的成绩单,使用不定参数函数返回三个值分别为课程门数,平均分,总分。

25.编程实现:使用itoa和const,定义一周的数值,如Monday=1 ,Tuesday=2,依次类推Sunday=7。

26.编程实现:实现字符串"123"和整数123之间的互转,并格式化输出他们转换后的类型和值。

27.编程实现:使用类型别名,让go语言支持中文关键字,如 int可以用整数型替代。

28.编程实现:声明一组变量:姓名(Name),年龄(Age),籍贯(From),专业(Major),从控制台接收内容并赋值给这些变量,最后输出这些变量的值。

29.写一个程序,获取当前时间,并格式化成 2017/06/15 08:05:00形式。

30.写一个程序,统计一段代码的执行耗时,单位精确到微秒。

31.计算99乘法表

32.写一个程序,对包含中文的字符串逆序。

33.写一个程序,判断一个字符串串是否是回文。

34.求1到100之内的所有质数,并打印到屏幕上/*、

35.打印出所有的“水仙花数”,所谓“水仙花数”是指⼀一个三位数,其各位数字⽴立方和等于该数本身。例例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方 +3的三次方。求100到1000之间的所有水仙花数,

36.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

37.生成1000个随机数组,实现一个插入排序,输出执行时间。

38.生成1000个随机数组,实现一个选择排序,输出执行时间。

39.生成1000个随机数组,实现一个冒泡排序,输出执行时间。

40.用sort包对数组排序

40.实现一个密码生成工具,支持以下功能
用户可以通过 -l 指定生成密码的长度。提示:可以用标准包 “flag”解析命令行参数 用户可以通过 -t 指定生成密码的字符集,比如 -t num生成全数字的密码。
-t char 生成包含全英⽂文字符的密码,
-t mix包含生成数字和英文的密码,
-t advance 生成包含数字、英文及特殊字符的密码

41.实现一个类似 linux的tree 命令,输入tree.exe能够以树状的形式当前目录下所有文件

42.随机生成1000个100以内整数保存到数组,并倒序打印以及求平均值、最大值、最小值的下标、并查找里面是否有55.

43.实现 WordCount。它应当返回一个映射,其中包含字符串 s 中每个“单词”的个数。函数 wc.Test 会对此函数执行一系列测试用例,并输出成功还是失败。

你会发现 strings.Fields 很有帮助。

代码段:

package main

import "strings"

import (

"golang.org/x/tour/wc"

)

func WordCount(s string) map[string]int {

m:=make(map[string]int)

danci:=strings.Fields(s)

for _,value := range danci{

m[value]++;

}

return m

}

func main() {

wc.Test(WordCount)

}

43:编写一个程序,用于在默认情况下输出其标准输入的 SHA256 散列,但也支持一个输出 SHA384 或 SHA512 散列的命令行标记.

44. echo 程序,使其能够打印 os.Args[0] ,即被执行命令本身的名字

package main

import (

"fmt"

"os"

)

func main() {

var s, sep string

for i := 0; i < len(os.Args); i++ {

s += sep + os.Args[i]

sep = " "

}

fmt.Println(s)

}

45.修改 echo 程序,使其打印每个参数的索引和值,每个一行

package main

import (

"fmt"

"os"

)

func main() {

for k, arg := range os.Args[0:] {

fmt.Println(k, arg)

}

45.一个整数输出二进制结果并按位取反,输入结果。并输出左移右移一位后结果。两个整数进行按位与和按位异或操作。

46.循环输出1~50的数字遇到包含4的数字跳过。

47.开启十个协程,实现0到9这十个数据自己和自己相加。(这十个几乎是同时执行的。)

48.建立一个包实现加减乘除,四则运算.在主程序中调用该包。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容

  • 整理自golang中文网https://studygolang.com/ 以及公众号 golang来啦 (侵删)...
    p_gerer阅读 1,801评论 1 2
  • 目录 1.go 各种代码运行 2.go 在线编辑代码运行 3.通过 Gob 包序列化二进制数据 4.使用 ...
    杨言锡阅读 1,122评论 0 1
  • GO语言基础 认识并安装GO语言开发环境 Go语言简介 Go语言是谷歌2009年发布的第二款开源编程语言 go语言...
    进击的大东阅读 436评论 0 0
  • 一、基础 1.变量 强类型语言 声明单个变量Go语言在声明变量时,自动对变量对应的内存进行初始化操作,不同于C语言...
    MrKan阅读 141评论 0 0
  • //GO基本语法介绍 package main // 声明main包 import( // 导入...
    涛焘阅读 1,046评论 0 0