This commit is contained in:
github-actions[bot] 2022-10-20 06:05:49 +00:00
parent 441913e7e5
commit 293c16fd2d
5 changed files with 6 additions and 6 deletions

View File

@ -174,7 +174,7 @@ default:
panic(fmt.Sprintf("invalid suit %q", s)) // Joker?
}
</code></pre>
<p>断言函数必须满足的前置条件是明智的做法,但这很容易被滥用。除非你能提供更多的错误信息,或者能更快速的发现错误,否则不需要使用断言,编译器在运行时会帮你检查代码</p>
<p>断言函数必须满足的前置条件是明智的做法,但这很容易被滥用。除非你能提供更多的错误信息,或者能更快速的发现错误,否则不需要断言那些运行时会检查的条件</p>
<pre><code class="language-Go">func Reset(x *Buffer) {
if x == nil {
panic(&quot;x is nil&quot;) // unnecessary!

View File

@ -224,7 +224,7 @@ perim := geometry.Path{{1, 1}, {5, 1}, {5, 4}, {1, 1}}
fmt.Println(geometry.PathDistance(perim)) // &quot;12&quot;, standalone function
fmt.Println(perim.Distance()) // &quot;12&quot;, method of geometry.Path
</code></pre>
<p><strong>译注:</strong> 如果我们要用方法去计算perim的distance还需要去写全geometry的包名和其函数名但是因为Path这个类型定义了一个可以直接用的Distance方法所以我们可以直接写perim.Distance()。相当于可以少打很多字作者应该是这个意思。因为在Go里包外调用函数需要带上包名还是挺麻烦的。</p>
<p><strong>译注:</strong> 如果我们要用函数去计算perim的distance还需要去写全geometry的包名和其函数名但是因为Path这个类型定义了一个可以直接用的Distance方法所以我们可以直接写perim.Distance()。相当于可以少打很多字作者应该是这个意思。因为在Go里包外调用函数需要带上包名还是挺麻烦的。</p>
<!-- 公众号 -->

View File

@ -4432,7 +4432,7 @@ default:
panic(fmt.Sprintf(&quot;invalid suit %q&quot;, s)) // Joker?
}
</code></pre>
<p>断言函数必须满足的前置条件是明智的做法,但这很容易被滥用。除非你能提供更多的错误信息,或者能更快速的发现错误,否则不需要使用断言,编译器在运行时会帮你检查代码</p>
<p>断言函数必须满足的前置条件是明智的做法,但这很容易被滥用。除非你能提供更多的错误信息,或者能更快速的发现错误,否则不需要断言那些运行时会检查的条件</p>
<pre><code class="language-Go">func Reset(x *Buffer) {
if x == nil {
panic(&quot;x is nil&quot;) // unnecessary!
@ -4641,7 +4641,7 @@ perim := geometry.Path{{1, 1}, {5, 1}, {5, 4}, {1, 1}}
fmt.Println(geometry.PathDistance(perim)) // &quot;12&quot;, standalone function
fmt.Println(perim.Distance()) // &quot;12&quot;, method of geometry.Path
</code></pre>
<p><strong>译注:</strong> 如果我们要用方法去计算perim的distance还需要去写全geometry的包名和其函数名但是因为Path这个类型定义了一个可以直接用的Distance方法所以我们可以直接写perim.Distance()。相当于可以少打很多字作者应该是这个意思。因为在Go里包外调用函数需要带上包名还是挺麻烦的。</p>
<p><strong>译注:</strong> 如果我们要用函数去计算perim的distance还需要去写全geometry的包名和其函数名但是因为Path这个类型定义了一个可以直接用的Distance方法所以我们可以直接写perim.Distance()。相当于可以少打很多字作者应该是这个意思。因为在Go里包外调用函数需要带上包名还是挺麻烦的。</p>
<div style="break-before: page; page-break-before: always;"></div><h2 id="62-基于指针对象的方法"><a class="header" href="#62-基于指针对象的方法">6.2. 基于指针对象的方法</a></h2>
<p>当调用一个函数时,会对其每一个参数值进行拷贝,如果一个函数需要更新一个变量,或者函数的其中一个参数实在太大我们希望能够避免进行这种默认的拷贝,这种情况下我们就需要用到指针了。对应到我们这里用来更新接收器的对象的方法,当这个接受者变量本身比较大时,我们就可以用其指针而不是对象来声明方法,如下:</p>
<pre><code class="language-go">func (p *Point) ScaleBy(factor float64) {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long