Go 中的介面

介面是一種型別,它定義了一個或多個方法簽名。 方法並沒有被實現,只有它們的簽名:方法名稱、參數型別和返回值型別。 像這樣: type Speaker interface { Speak() } 現在你可以有一個函數接受任何實現了介面所定義的所有方法的型別: func SaySomething(s Speaker) { s.Speak() } 並且我們可以將任何實現了這些方法的結構體傳遞給它: type Speaker interface { Speak() } type Person struct { Name string Age int } func (p Person) Speak() { fmt.Println("來自" + p.Name + "的問候") } func SaySomething(s Speaker) { s.Speak() } func main() { flavio := Person{Age: 39, Name: "Flavio"} SaySomething(flavio) }

Object 的 values() 方法

了解 JavaScript 中 Object 物件的 values() 方法 該方法會回傳包含所有物件自有屬性值的陣列。 使用方法: const person = { name: 'Fred', age: 87 } Object.values(person) // ['Fred', 87] Object.values() 也可用於陣列: const people = ['Fred', 'Tony'] Object.values(people) // ['Fred', 'Tony']

String valueOf() 方法

了解 JavaScript 字符串的 valueOf() 方法 返回当前 String 对象的字符串表示: const str = new String('Test') str.valueOf() //'Test' 同 toString()。

Swift 結構體

本教程屬於 Swift 系列。 結構體是 Swift 中一個重要的概念。 Swift 到處都有結構體,甚至內建的類型也是結構體。 我們可以創建結構體的實例,我們稱之為 對象(objects)。 在大多數語言中,對象只能由類創建。Swift 也有類,但是你也可以從結構體中創建對象,官方文件還建議我們更傾向使用結構體,因為它們使用起來更加簡單。 它們是類的輕量版。 一個結構體可以有屬性。 一個結構體可以有方法(函數)。 一個結構體可以定義下標。 一個結構體可以定義初始化器。 一個結構體可以遵從協議。 一個結構體可以被擴展。 類允許的一個重要特性是繼承,所以如果你需要繼承,你需要使用類。 結構體的定義使用如下語法: struct Dog { } 結構體內部你可以定義存儲屬性: struct Dog { var age = 8 var name = "Roger" } 這個結構體定義定義了一個類型。要創建一個具有此類型的新實例,使用以下語法: let roger = Dog() 一旦你有了一個實例,你可以使用點語法來訪問其屬性: let roger = Dog() roger.age roger.name 相同的點語法也用於更新屬性值: roger.age = 9 你也可以通過傳遞屬性的值創建結構體實例: let syd = Dog(age: 7, name: "Syd") syd.age syd.name 要這樣做,屬性必須被定義為變量,使用 var,而不是常量(使用 let)。同時,重要的是要尊重那些屬性定義的順序。 結構體可以有實例方法:屬於結構體實例的函數。 struct Dog { var age = 8 var name = "Roger" func bark() { print("\(name): wof!...

toExponential()方法

瞭解JavaScript中的toExponential()方法 你可以使用這個方法來取得一個以指數表示的數字字串: new Number(10).toExponential() //1e+1 (= 1 \* 10^1) new Number(21.2).toExponential() //2.12e+1 (= 2.12 \* 10^1) 你可以傳遞一個參數來指定小數部分的位數: new Number(21.2).toExponential(1) //2.1e+1 new Number(21.2).toExponential(5) //2.12000e+1 請注意在第一個例子中我們失去了精度。

Vue 方法 vs 監聽器 vs 計算屬性

Vue.js 提供了三種方法來處理內容:方法 (methods)、監聽器 (watchers) 和計算屬性 (computed properties)。該如何選擇使用哪一種方法呢? 使用方法 (methods) 的時機: 當需要對 DOM 中的某些事件做出反應時。 當某些事情在組件中發生時調用函數。你可以從計算屬性 (computed properties) 或監聽器 (watchers) 中調用方法。 使用計算屬性 (computed properties) 的時機: 需要根據現有的數據來生成新的數據。 你在模板中使用的變量是由一個或多個數據屬性構建的。 你希望將一個複雜的、嵌套的屬性名稱簡化為更易讀、更易使用的名稱,同時當原始屬性更改時更新它。 需要從模板中引用一個值。在這種情況下,創建一個計算屬性是最好的選擇,因為它會被緩存。 需要監聽多個數據屬性的變化。 使用監聽器 (watchers) 的時機: 當需要監聽某個數據屬性的變化並執行一些操作時。 當需監聽 prop 的值變化時。 當只需要監聽單個特定屬性時(同時不能監聽多個屬性)。 當需要監聽某個數據屬性直到達到某個特定值,然後執行相應操作時。

在 Go 中的方法

在 Go 中,一個函數可以被賦值給結構體,這種情況下我們稱之為方法。 舉個例子: type Person struct { Name string Age int } func (p Person) Speak() { fmt.Println("Hello from " + p.Name) } func main() { flavio := Person{Age: 39, Name: "Flavio"} flavio.Speak() } 方法可以聲明為指針接收者或值接收者。 上面的例子展示了一個值接收者,它接收結構體實例的副本。 下面是一個指針接收者,它接收結構體實例的指針: func (p *Person) Speak() { fmt.Println("Hello from " + p.Name) }

如何在JavaScript中删除字符串的最后一个字符

如何从字符串中删除最后一个字符呢? 最简单的解决方案是使用字符串的 slice() 方法,传递两个参数。第一个参数是0,表示起点位置。第二个参数是要删除的字符数量。传递一个负数将从末尾开始删除。这是解决方案: const text = 'abcdef' const editedText = text.slice(0, -1) //'abcde' 请注意,slice() 方法不会修改原始字符串。 它会创建一个新的字符串,所以在上面的示例中,我将其赋值给一个新的变量。