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 % 10) + '0'
result = fmt.Sprintf("%c%s", c3, result)
index1--
index2--
}
for index1 >= 0 {
c1 := a[index1] - '0'
sum := int(c1) + left
if sum >= 10 {
left = 1
} else {
left = 0
}
c3 := (sum % 10) + '0'
result = fmt.Sprintf("%c%s", c3, result)
index1--
}
for index2 >= 0 {
c2 := b[index2] - '0'
sum := int(c2) + left
if sum >= 10 {
left = 1
} else {
left = 0
}
c3 := (sum % 10) + '0'
result = fmt.Sprintf("%c%s", c3, result)
index2--
}
if left == 1 {
result = fmt.Sprintf("1%s", result)
}
return
}

分析:

1.Go实现大数相加,面试常见问题

2.实现思想:人的思维,从个位依此加到最高位

demo6:

package main

import "fmt"

func test() int {
defer func() {
if err := recover(); err != nil {
fmt.Println(err)
}
}()
b := 0
a := 100 / b
return a
} func main() {
test()
}

分析:

1.Go没有try,catch语句,应该用这里的方式

demo7:

package main

import "fmt"

func test() {
i := new(int)
fmt.Println(i) //0xc000012088
fmt.Println(*i) // s1 := new([]int)
*s1 = make([]int, 5)
fmt.Println(s1) //&[0 0 0 0 0] s2 := make([]int, 5)
fmt.Println(s2) //[0 0 0 0 0] (*s1)[0] = 100
s2[0] = 100
fmt.Println(s1) //&[100 0 0 0 0]
fmt.Println(s2) //&[100 0 0 0 0]
} func main() {
test()
}

分析:

1.make和new的区别练习

Go基础(3)的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  10. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

随机推荐

  1. spring.resources

    @EnableWebMvcNormally you would add @EnableWebMvc for a Spring MVC app, but Spring Boot adds it auto ...

  2. JavaScript单线程和异步机制

    随着对JavaScript学习的深入和实践经验的积累,一些原理和底层的东西也开始逐渐了解.早先也看过一些关于js单线程和事件循环的文章,不过当时看的似懂非懂,只留了一个大概的印象:浏览器中的js程序时 ...

  3. 8. 使用ueditor添加文章

    ueditor是一个很好用的html编辑器,不仅提供了格式化编辑文本的功能,还提供了自动上传图片的功能,现在就使用该编辑器来实现博客文章的编辑功能.1. 使用ueditor过程中会请求一个后台js文件 ...

  4. 那些年我们一起清除过的浮动float与clearfix

    浮动(float),一个我们即爱又恨的属性.爱,因为通过浮动,我们能很方便地布局: 恨,浮动之后遗留下来太多的问题需要解决,特别是IE6-7(以下无特殊说明均指 windows 平台的 IE浏览器). ...

  5. 利用异或求(整数数组中,有2K+1个数,其中有2k个相同,找出不相同的那个数)

    转自https://blog.csdn.net/renjie_998003/article/details/50738025 java的位运算符中有一个叫异或的运算符,用符号(^)表示,其运算规则是: ...

  6. Protostuff序列化分析

    前言最近项目中需要将业务对象直接序列化,然后存数据库:考虑到序列化.反序列化的时间以及生产文件的大小觉得Protobuf是一个很好的选择,但是Protobuf有的问题就是需要有一个.proto的描述文 ...

  7. mybatis批量提交

    之前在做项目时,使用mybatis,批量执行sql,这里简单写下步骤 在配置数据库连接时,加入一个参数,例如 jdbc:mysql://127.0.0.1:3307/mvs-report?allowM ...

  8. BZOJ_4269_再见Xor_线性基

    BZOJ_4269_再见Xor_线性基 Description 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. Input 第一行 ...

  9. 跳动在网页中间的精灵----Javascript

    今天开始js的内容整理,跳动在网页里的精灵就是它了. 一.简介 1.什么是Javascript JavaScript 是一种具有面向对象能力的.解释型的程序设计语言.更具体一点,它是基于对象和事件驱动 ...

  10. SpringBoot进阶教程(二十八)整合Redis事物

    Redis默认情况下,事务支持被禁用,必须通过设置setEnableTransactionSupport(true)为使用中的每个redistplate显式启用.这样做会强制将当前重新连接绑定到触发m ...