GO高质量编程| 青训营笔记

93 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记

上次课程我们了解了GO的基本用法,熟悉了基本的语法规则,这节课聚焦于高质量编程与性能调优,旨在写出优雅的代码。

首先是第一部分,高质量编程。编写的代码正确可靠,简洁清晰的目标就是高质量代码。 因此,为达到以上目的,我们要遵守一些原则: 简单性、可读性、生产力。 针对GO,我们应注意以下几点:代码格式,注释,命名规范,控制流程,错误和异常处理。 常见的GOfmt格式是我们都应该遵守的格式。 良好的注释可以增加程序的可读性,适合注释公共符号。 命名规范要记住简洁胜于冗长。尽量使用易懂的缩略词。 控制流程要保证逻辑清晰。

第二部分是性能调优。 首先介绍了GO语言提供基准性能测试的benchmark工具。 针对slice,map等变量,尽可能在使用make()初始化切片时提供容量信息。其本质是一个数组,只是用一个结构体封装了。同时还避免另一个陷阱:大内存未释放。 使用atomic包实现调优。 一下用一段我自己写的程序来总结一下上面几点吧。

package main

import "sort"

func threeSum(nums []int) [][]int { nums = quick_Sort(nums, 0, len(nums)-1) res := [][]int{} for l := 0; l < len(nums); l++ { if l != 0 && nums[l] == nums[l-1] { continue }

	r := len(nums) - 1

	//只要保证l和mid不重复,r就不会重复
	for mid := l + 1; mid < len(nums); mid++ {
		if mid != l+1 && nums[mid] == nums[mid-1] {
			continue
		}

		for mid < r && nums[l]+nums[mid]+nums[r] > 0 {
			r--
		}

		if mid == r {
			break
		}

		if nums[l]+nums[mid]+nums[r] == 0 {
			res = append(res, []int{nums[l], nums[mid], nums[r]})
		}

	}

}

return res

}

func quick_Sort(nums []int, left, right int) []int { if left > right { return nums } i, j, pivot := left, right, nums[left] for i < j { for i < j && nums[j] >= pivot { j-- } for i < j && nums[i] <= pivot { i++ } nums[i], nums[j] = nums[j], nums[i] } nums[i], nums[left] = nums[left], nums[i]

quick_Sort(nums, left, i-1)
quick_Sort(nums, i+1, right)
return nums

}

//四数之和 func fourSum(nums []int, target int) [][]int { sort.Ints(nums) res := [][]int{} for l := 0; l < len(nums); l++ { if l > 0 && nums[l] == nums[l-1] { continue }

	for ll := l + 1; ll < len(nums); ll++ {
		if ll > l+1 && nums[ll] == nums[ll-1] {
			continue
		}

		r := len(nums) - 1

		for mid := ll + 1; mid < len(nums); mid++ {

			if mid > ll+1 && nums[mid] == nums[mid-1] {
				continue
			}

			for mid < r && nums[l]+nums[ll]+nums[mid]+nums[r] > target {
				r--
			}

			if mid == r {
				break
			}

			if nums[l]+nums[ll]+nums[mid]+nums[r] == target {
				res = append(res, []int{nums[l], nums[ll], nums[mid], nums[r]})
			}
		}
	}
}
return res

} **

标题:📖 青训营第三期 | 笔记创作活动-青训营社区

网址:forum.juejin.cn/youthcamp/p…