设为首页 加入收藏

TOP

Go基础(3)(一)
2019-03-27 20:09:06 】 浏览:291
Tags:基础

demo1:

package main

import "fmt"

func print() {
    for i := 1; i < 10; i++ {
        for j := 1; j <= i; j++ {
            fmt.Printf("%d * %d = %d  ", j, i, i*j)
        }
        fmt.Println()
    }
}

func main() {
    print()
}

分析:

1.基本的99乘法表打印练习

 

demo2:

package main

import "fmt"

func main() {
    const min int = 1
    const max int = 10000
    process(min, max)
}

func process(min, max int) {
    for i := min; i <= max; i++ {
        if perfect(i) {
            fmt.Printf("%d是完数\n", i)
        }
    }
}

func perfect(n int) bool {
    var sum int = 0
    for i := 1; i < n; i++ {
        if n%i == 0 {
            sum += i
        }
    }
    return n == sum
}

分析:

1.判断1-10000有哪些完数的练习

 

demo3:

package main

import "fmt"

func main() {
    const str1 string = "helloolleh"
    const str2 string = "helloworld"
    process(str1)
    process(str2)

    const str3 string = "上海自来水来自海上"
    const str4 string = "我喜欢学习Go"
    const str5 string = "go上海自来水来自海上og"
    essential(str3)
    essential(str4)
    essential(str5)
}

//可以正常处理英文字符串,无法处理中文
func process(str string) {
    var flag bool = true
    for i := 0; i < len(str); i++ {
        if i == len(str)/2 {
            break
        }
        last := len(str) - i - 1
        if str[i] != str[last] {
            flag = false
        }
    }
    if flag {
        fmt.Printf("%s 是回文字符串\n", str)
    } else {
        fmt.Printf("%s 不是回文字符串\n", str)
    }
    return
}

//正常处理所有的字符串
func essential(str string) {
    tmp := []rune(str)
    lenth := len(tmp)
    var flag bool = true
    for i, _ := range tmp {
        if i == lenth/2 {
            break
        }
        last := lenth - i - 1
        if tmp[i] != tmp[last] {
            flag = false
        }
    }
    if flag {
        fmt.Printf("%s 是回文字符串\n", str)
    } else {
        fmt.Printf("%s 不是回文字符串\n", str)
    }
    return
}

分析:

1.判断是否是回文字符串的练习

2.尤其注意中文字符的处理,使用rune

 

demo4:

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    result := read()
    worldCount, spaceCount, numberCount, otherCount := count(result)
    fmt.Printf("字母:%d\n空格:%d\n数字:%d\n其他字符:%d\n", worldCount, spaceCount, numberCount, otherCount)
}

func read() string {
    reader := bufio.NewReader(os.Stdin)
    result, _, err := reader.ReadLine()
    if err != nil {
        fmt.Println("read from console error:", err)
        return ""
    }
    return string(result)
}

func count(str string) (worldCount, spaceCount, numberCount, otherCount int) {
    tmp := []rune(str)
    for _, v := range tmp {
        switch {
        case v >= 'a' && v <= 'z':
            fallthrough
        case v >= 'A' && v <= 'Z':
            worldCount++
        case v == ' ':
            spaceCount++
        case v >= '0' && v <= '9':
            numberCount++
        default:
            otherCount++
        }
    }
    return
}

分析:

1.读取一串输入并对字符进行技术的程序

2.对常用其他包的简单使用

 

demo5:

package main

import "fmt"

func main() {
    var a string = "92233720368547758075"
    var b string = "129223372036854775807"
    result := bigIntegerAdd(a, b)
    fmt.Printf("%s + %s = %s\n", a, b, result)
}

func bigIntegerAdd(a, b string) (result string) {
    if len(a) == 0 || len(b) == 0 {
        result = "0"
        return
    }
    var index1 int = len(a) - 1
    var index2 int = len(b) - 1
    var left int
    for index1 >= 0 && index2 >= 0 {
        c1 := a[index1] - '0'
        c2 := b[index2] - '0'
        sum := int(c1) + int(c2) + left
        if sum >= 10 {
            left = 1
        } else {
            left = 0
        }
        c3 := (sum % 1
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇golang 使用匿名结构体的问题 下一篇从0开始学golang--1.1--连接ms sq..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目