henry3260 opened a new issue, #73951:
URL: https://github.com/apache/airflow/issues/73951

   ### What happens
   
   `airflow.DagSpec` and `airflow.TaskSpec` carry 9 pointer fields, so that a 
value an author
   sets explicitly is distinguishable from one left unset — a `bool` whose 
default comes from
   Airflow config, such as `catchup`, is the clearest case.
   
   Go does not allow taking the address of a literal, so the obvious spelling 
does not compile:
   
   ```go
   dag := airflow.Dag("etl", airflow.DagSpec{Catchup: &false})  // invalid 
operand
   ```
   
   An author has to name a variable for every such field:
   
   ```go
   catchup := false
   dag := airflow.Dag("etl", airflow.DagSpec{Catchup: &catchup})
   ```
   
   ### What would fix it
   
   Go 1.26's `new(expr)`:
   
   ```go
   dag := airflow.Dag("etl", airflow.DagSpec{Catchup: new(false)})
   ```
   
   ### Why this is deferred rather than done
   
   `go-sdk/go.mod` is on `go 1.25.0`. Go 1.26 was released in February 2026, 
which is too new
   to require of everyone who builds a Go bundle, so the floor is not being 
raised for this.
   Decided while reviewing #73936.
   
   An `airflow.Ptr[T]` generic helper was considered and rejected there: the 
pointer
   transformation is the language's job, not the SDK's.
   
   ### Acceptance
   
   - [ ] Go 1.26 is an acceptable minimum for the Go SDK.
   - [ ] `go-sdk/go.mod` raised to it.
   - [ ] `new(expr)` used in the Dag authoring docs and examples, so the 
spelling an author
         copies is the short one.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to