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.建立一个包实现加减乘除,四则运算.在主程序中调用该包。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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