Go基础(3)
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)的更多相关文章
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- node-webkit 环境搭建与基础demo
首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- HTTPS 互联网世界的安全基础
近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- .NET基础拾遗(5)多线程开发基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...
- .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...
随机推荐
- DUBBO报错分析—1(连接zookeeper成功,调用方法无反应,不报错)
思路分析 调用方法时,最后调用执行的是mapper的sql语句,既然调用对应的方法无法获取返回值,多是sql错误,但是并未报sql错误,说明可能是与sql相关的数据源配置错误. 过程调试 经尝试,当直 ...
- css中的单冒号和双冒号
最近突然被别人问起css单冒号和双冒号有什么区别,答曰:"不知道". 虽然还在填坑中,但作为一个跨过了初级的FEer,感觉着实汗颜,刚好今天下午在搜别的问题的时候,突然看到一个对比 ...
- java把结果集序列化成json通过out流传给前台步骤
1.把处理好的list或map序列化成JSON字符 /** * 序列化集合成JSON字符 * @param list * @return */ public static String structu ...
- 【BZOJ 2713】[Violet 2]愚蠢的副官&&【BZOJ1183】[Croatian2008]Umnozak——【数位DP】
题目链接: 2713传送门 1183传送! 题解: 由于看不懂英文题解(十个单词十一个不认识……),所以只能自己想QAQ. 其实乱搞就好= =. 首先我们发现,各位数字乘积要在1e9以下才可能有用,这 ...
- BZOJ_1954_Pku3764 The xor-longest Path_Trie树
Description 给定一棵n个点的带权树,求树上最长的异或和路径 把根到点路径上点权异或和求出来,然后变成了Trie树裸题. 代码: #include <cstdio> #inc ...
- B20J_2733_[HNOI2012]永无乡_权值线段树合并
B20J_2733_[HNOI2012]永无乡_权值线段树合并 Description:n座岛,编号从1到n,每座岛都有自己的独一无二的重要度,按照重要度可以将这n座岛排名,名次用1到 n来表示.某些 ...
- BZOJ_2141_排队_树状数组+分块
BZOJ2141_排队_树状数组+分块 Description 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我,吃完果果唱支歌,大家 乐和和.红星幼儿园的小朋友们排起了 ...
- CAN总线的显性电平与隐性电平
读CAN总线的书时,都会涉及到总线电平的问题,CAN总线的电平分为显性电平与隐性电平,这是CAN总线物理层的核心部分,也是总线仲裁的基础.那何为显性,何为隐性呢? 根据孔丙火(微信公众号:孔丙火)的理 ...
- Java实现大批量数据导入导出(100W以上) -(二)导出
使用POI或JXLS导出大数据量(百万级)Excel报表常常面临两个问题: 1. 服务器内存溢出: 2. 一次从数据库查询出这么大数据,查询缓慢. 当然也可以分页查询出数据,分别生成多个Excel打包 ...
- ASP.NET Core 实战:基于 Jwt Token 的权限控制全揭露
一.前言 在涉及到后端项目的开发中,如何实现对于用户权限的管控是需要我们首先考虑的,在实际开发过程中,我们可能会运用一些已经成熟的解决方案帮助我们实现这一功能,而在 Grapefruit.VuCore ...